// // #include <iostream>
// // #include <unistd.h>
// // #include <signal.h>
// // void handler(int signumber)
// // {
// // // 整个代码就只有这⼀处打印
// // std::cout << "获取了⼀个信号: " << signumber << std::endl;
// // }
// // // mykill -signumber pid
// // int main()
// // {
// // signal(2, handler); // 先对2号信号进⾏捕捉
// // // 每隔1S，⾃⼰给⾃⼰发送2号信号
// // while(true)
// // {
// // sleep(1);
// // raise(2);
// // }
// // return 0;
// // }
// // #include <iostream>
// // #include <unistd.h>
// // #include <signal.h>
// // void handler(int signumber)
// // {
// // // 整个代码就只有这⼀处打印
// // std::cout << "获取了⼀个信号: " << signumber << std::endl;
// // }
// // // mykill -signumber pid
// // int main()
// // {
// // signal(2, handler); // 先对2号信号进⾏捕捉
// // // 每隔1S，⾃⼰给⾃⼰发送2号信号
// // while(true)
// // {
// // sleep(1);
// // raise(2);
// // }
// // return 0;
// // }
// #include <iostream>
// #include <unistd.h>
// #include <signal.h>
// void handler(int sig)
// {
// printf("catch a sig : %d\n", sig);
// }
// // v1
// int main()
// {
// signal(SIGFPE, handler); // 8) SIGFPE
// sleep(1);
// int a = 10;
// a/=0;
// while(1);
// return 0;
// }
// #include <stdio.h>
// #include <signal.h>
// void handler(int sig)
// {
// printf("catch a sig : %d\n", sig);
// }
// int main()
// {
// signal(SIGSEGV, handler);
// sleep(1);
// int *p = NULL;
// *p = 100;
// while(1);
// return 0;
// }


#include <string>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
int main()
{
if (fork() == 0)
{
sleep(1);
int a = 10;
a /= 0;
exit(0);
}
int status = 0;
waitpid(-1, &status, 0);
printf("exit signal: %d, core dump: %d\n", status&0x7F, (status>>7)&1);
return 0;
}